package cn.e3mall.search.service.impl;

import org.apache.solr.client.solrj.SolrQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;

import cn.e3mall.common.pojo.SearchResult;
import cn.e3mall.search.dao.SearchDao;
import cn.e3mall.search.service.SearchService;

/**
 * @description 首页商品搜索服务
 * @author JiangBin
 * @date 2018年3月12日 下午11:04:36
 * @version 1.0.0 @
 */
@Controller
public class SearchServiceImpl implements SearchService {
	@Autowired
	private SearchDao searchDao;

	@Value("${DEFAULT_FIELD}")
	private String DEFAULT_FIELD;

	@Override
	public SearchResult search(String keyWord, int page, int rows) throws Exception {
		// 创建一个SolrQuery对象
		SolrQuery solrQuery = new SolrQuery();
		// 设置查询条件
		solrQuery.setQuery(keyWord);
		// 设置分页条件
		solrQuery.setStart((page - 1) * rows);
		// 设置rows
		solrQuery.setRows(rows);
		// 设置默认搜索域
		solrQuery.set("df", DEFAULT_FIELD);
		// 设置高亮
		solrQuery.setHighlight(true);
		solrQuery.addHighlightField("item_title");
		solrQuery.setHighlightSimplePre("<em style=\"color:red\">");
		solrQuery.setHighlightSimplePost("</em>");

		// 执行查询
		SearchResult searchResult = searchDao.search(solrQuery);

		// 计算总页数
		int recourdCount = searchResult.getRecourdCount();
		int pages = recourdCount / rows;
		if (recourdCount % rows > 0) {
			pages++;
		}

		// 设置返回结果
		searchResult.setTotalPages(pages);
		return searchResult;
	}

}
